进程间通信方式 | 您所在的位置:网站首页 › linux 消息队列可以被多少进程访问 › 进程间通信方式 |
消息队列(System V)
作用
从一个进程向另外一个进程发送一个带有类型的数据块 本质是存储在内核中的一个消息的队列(链表) 特点 每个数据块都被认为有一个类型,接受者进程接收的数据块可以有不同的类型值和管道一样,每个消息的最大长度是有上限的(MSGMAX),每个消息队列的总字节数也是有上限的(MSGMNB),系统上的消息队列总数也是有上限的(MSGMNI)是一个全双工通信,可读可写。生命周期随内核查看消息队列:ipcs -q IPC对象数据结构:/usr/include/linux/ipc.h struct ipc_perm { __kernel_key_t key; __kernel_uid_t uid; __kernel_gid_t gid; __kernel_uid_t cuid; __kernel_gid_t cgid; __kernel_mode_t mode; unsigned short seq; };消息队列结构:/usr/include/linux/msg.h struct msqid_ds { struct ipc_perm msg_perm; struct msg *msg_first; /* first message on queue,unused */ struct msg *msg_last; /* last message in queue,unused */ unsigned short msg_qnum; /* number of messages in queue */ unsigned short msg_qbytes; /* max number of bytes on queue */ __kernel_ipc_pid_t msg_lspid; /* pid of last msgsnd */ __kernel_ipc_pid_t msg_lrpid; /* last receive pid */ __kernel_time_t msg_stime; /* last msgsnd time */ __kernel_time_t msg_rtime; /* last msgrcv time */ __kernel_time_t msg_ctime; /* last change time */ unsigned long msg_lcbytes; /* Reuse junk fields for 32 bit */ unsigned long msg_lqbytes; /* ditto */ unsigned short msg_cbytes; /* current number of bytes on queue */ };消息队列的系统限制: #define MSGMNI 16 /* |
CopyRight 2018-2019 实验室设备网 版权所有 |